home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib09.dsk
/
THREE-D MAPPING.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
78 lines
1 REM **********************
2 REM * THREE-D MAPPING *
3 REM * BY R. M. SMYTHE *
4 REM * COPYRIGHT (C) 1982 *
5 REM * BY MICRO-SPARC INC *
6 REM * LINCOLN, MA. 01773 *
7 REM **********************
30 HOME : INVERSE : PRINT " "
40 PRINT " ";: NORMAL : HTAB 27: INVERSE : PRINT " "
50 PRINT " ";: NORMAL : PRINT " 3-D CONTOUR MAP DISPLAY ";: INVERSE : PRINT " "
60 PRINT " ";: NORMAL : HTAB 27: INVERSE : PRINT " "
70 INVERSE : PRINT " ": NORMAL
80 VTAB 10: HTAB 7: PRINT "R. M. SMYTHE"
97 :
98 REM MAIN PROGRAM
99 :
100 NH% = 10: REM NUMBER HORIZONS
110 NP% = 12: REM NUMBER OF POINTS ALONG EACH HORIZON
120 DIM SPOT%(NH%,NP%,2)
130 GOSUB 200
140 HGR : HCOLOR= 3
150 GOSUB 300: REM LOOK FROM GROUND LEVEL
160 VTAB 21: CALL -958: INPUT "VIEW FROM ANGLE ";THETA
170 THETA = THETA *3.14/180
180 GOSUB 300
190 GOTO 160
197 :
198 REM READ IN DATA SUBR.
199 :
200 VTAB 20: HTAB 7: FLASH : PRINT "READING DATA": NORMAL
210 FOR LINE = 1 TO NH%
220 READ LD%(LINE): REM DISTANCE FROM VIEWER
230 FOR PNT = 1 TO NP%:SPOT%(LINE,PNT,1) = PNT *20: READ SPOT%(LINE,PNT,2)
240 NEXT PNT,LINE: REM DO FOR EACH POINT AND LINE
250 RETURN
297 :
298 REM DRAW PICTURE SUBR.
299 :
300 HGR :TEMPLO = 1: FOR LINE = 1 TO NH%
310 XL% = SPOT%(LINE,1,1):Y% = 150 -LD%(LINE) * SIN(THETA)
320 HL% = -SPOT%(LINE,1,2) * COS(THETA) *3 +Y%
330 IF LINE = 1 THEN IF (HL% >TEMPLO) THEN TEMPLO = HL%
340 FOR PNT = 2 TO NP%
350 X% = SPOT%(LINE,PNT,1):Y% = 150 -LD%(LINE) * SIN(THETA)
360 H% = -SPOT%(LINE,PNT,2) * COS(THETA) *3 +Y%
365 REM SAVE HIGHEST VALUES FOR LIMITS TO ERASEING
370 HIGHEST = H%: IF HL% <H% THEN HIGHEST = HL%
380 IF (H% >TEMPLO) THEN TEMPLO = H%
390 HPLOT XL%,HL% TO X%,H%: REM LAST POINT TO NEW POINT
397 :
398 REM ERASE PROCEDURE
399 :
400 IF LINE = 1 THEN 480: REM NO ERASING NEEDED
410 HCOLOR= 0: REM BLACK
420 FOR A = HIGHEST TO LOWEST
430 B = HL%: IF A >HL% THEN B = A
440 C = H%: IF A >H% THEN C = A
450 IF C >177 THEN C = 177: IF B >177 THEN B = 177
454 :
455 REM ERASE PARALLEL TO THE DRAWN LINE BUT JUST BELOW, ALL THE WAY DOWN TO LOWEST POINT PLOTTED
456 :
460 HPLOT XL%,B +2 TO X%,C +2: NEXT A
470 HCOLOR= 3: REM WHITE
480 XL% = X%:HL% = H%: REM SAVE THIS POINT FOR NEXT TIME
490 NEXT PNT:LOWEST = TEMPLO: NEXT LINE: RETURN
997 :
998 REM DATA
999 :
1000 DATA 50,23,25,28,30,31,32,30,28,28,30,35,33
1010 DATA 45,23,25,31,34,33,32,30,28,27,30,35,33
1020 DATA 40,22,24,30,38,33,28,26,26,27,28,30,31
1030 DATA 35,20,22,27,32,27,27,25,24,24,24,25,27
1040 DATA 30,20,21,22,22,24,25,21,20,20,20,21,22
1050 DATA 25,16,15,15,17,21,26,20,17,17,17,17,18
1060 DATA 20,14,13,13,15,20,27,19,15,14,14,14,15
1070 DATA 15,11,10,10,12,15,20,15,13,11,11,11,12
1080 DATA 10,8,7,8,10,13,18,23,16,12,8,7,6
1090 DATA 5,4,5,5,4,6,10,14,18,13,10,8,8,8